// 添加axios导入
import axios from 'axios';

// 加载会话列表
// 修改为支持按角色过滤会话
export async function loadSessions(userId, role = '') {
    try {
        console.log('sessionService.loadSessions调用参数:', {
            userId,
            role,
            userIdType: typeof userId
        });

        // 确保userId被正确添加到请求参数中
        const params = {};
        if (userId !== undefined && userId !== null && userId !== '') {
            params.userId = userId;
        } else {
            console.warn('userId为空，可能导致请求失败');
        }

        if (role) {
            params.role = role;
        }

        const response = await axios.get('http://localhost:8080/user/ai-session/list', {
            params: params
        });

        console.log('会话列表请求成功，URL:', response.config.url);
        return response.data.data;
    } catch (error) {
        console.error('加载会话列表失败:', error);
        // 添加更详细的错误信息
        if (error.response) {
            console.error('请求错误详情:', {
                status: error.response.status,
                statusText: error.response.statusText,
                url: error.config.url,
                params: error.config.params
            });
        }
        throw error;
    }
}

// 创建新会话
export async function createSession(userId, role, initialMessage) {
    try {
        const response = await axios.post('http://localhost:8080/user/ai-session/create', null, {
            params: {
                userId,
                role, // 使用role而不是character
                initialMessage
            }
        });
        return response.data.data;
    } catch (error) {
        console.error('创建会话失败:', error);
        throw error;
    }
}

// 加载会话消息
export async function loadSessionMessages(sessionDbId) {
    try {
        // 增加参数验证
        if (!sessionDbId) {
            throw new Error('会话ID不能为空');
        }

        // 确保参数为数值类型
        const dbId = Number(sessionDbId);
        if (isNaN(dbId)) {
            throw new Error('会话数据库ID必须是有效数字');
        }

        const response = await axios.get('http://localhost:8080/user/ai-session/messages', {
            params: {sessionId: dbId}
        });
        return response.data.data;
    } catch (error) {
        console.error('加载会话消息失败:', error);
        throw error;
    }
}

// 删除会话
export async function deleteSession(sessionDbId) {
    try {
        await axios.delete(`http://localhost:8080/user/ai-session/${sessionDbId}`);
    } catch (error) {
        console.error('删除会话失败:', error);
        throw error;
    }
}

// 更新会话标题 - 修复API路径和参数名以匹配最新后端控制器
export async function updateSessionTitle(sessionDbId, title) {
    try {
        // 修复参数名，将 id 改为 sessionId 以匹配后端控制器
        const response = await axios.put('http://localhost:8080/user/ai-session/title', null, {
            params: {
                sessionId: sessionDbId,  // 修复参数名与后端保持一致
                title
            }
        });
        return response.data.data;
    } catch (error) {
        console.error('更新会话标题失败:', error);
        throw error;
    }
}